﻿// 3610. 找位置.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <map>
#include <vector>


using namespace std;

/*
https://www.acwing.com/problem/content/3613/

对给定的一个字符串，找出有重复的字符，并给出其位置。

输入格式
共一行，一个由字母和数字组成的字符串。

输出格式
统计所有重复出现的字符，并按照第一次出现的先后顺序，每行输出一个字符的相关信息。

每个字符按从小到大顺序输出它出现过的位置下标，占一行，具体格式参考样例。

注意：给定字符串中字符的下标从左到右，从 0开始。

数据范围
输入字符串长度不超过 100。

输入样例：
abcaaAB12ab12
输出样例：
a:0,a:3,a:4,a:9
b:1,b:10
1:7,1:11
2:8,2:12
*/

vector<char> v;
map<char, vector<int>> mm;
string str;

int main()
{
	cin >> str;

	for (int i = 0; i < str.size(); i++) {
		char curr = str[i];
		/*if (curr >= 'A' && curr <= 'Z') {
			curr = curr - 'A' + 'a';
		}*/
		if (mm.count(curr) != 0) {
			mm[curr].push_back(i);
		}
		else {
			v.push_back(curr);
			mm[curr].push_back(i);
		}
	}

	for (int i = 0; i < v.size(); i++) {
		char curr = v[i];
		if (mm[curr].size() == 1) continue;
		for (int i = 0; i < mm[curr].size(); i++) {
			cout << curr << ":" << mm[curr][i];
			if (i != mm[curr].size() - 1) {
				cout << ",";
			}
		}
		cout << endl;
	}

}
 